package baseGrammar;

import java.util.Arrays;
import java.util.Scanner;


public class array {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);

        int[] a = {5, 4, 3, 2, 1};
        //定义几个就开几个空间，不定义就不开空间，明确数组中元素值使用静态初始化数组,数组放在栈中
        for (int i = 0; i < a.length; i++) {
            System.out.printf("%d ", a[i]);
        }
        System.out.println();

        //java中没有静态数组 动态数组这种名词，只有静态初始化数组和动态初始化数组

        int[] b = new int[5];//不明确数组有中元素值使用动态初始化数组，数组放在堆中
        for (int i = 0; i < b.length; i++) b[i] = cin.nextInt();//对于动态初始化数组，length就是数组的容量大小
        for (var item : b) System.out.printf("%d ", item);
        System.out.println();


        String[] s = new String[2];
        for (int i = 0; i < s.length; i++) s[i] = cin.next();//next()默认读取的是字符串型
        // next()就是c++中cin,遇到空格分隔读取了。nextLine()就是c++中getline(cin,s)读入一行才行
        for (var item : s) System.out.printf("%s\n", item);
        
        /*
         当我们想对数组进行一些操作时，我们可以使用Arrays工具类中的方法，需要导入util.Arrays包
         Arrays类包含了一系列静态方法，用于对数组进行排序、搜索、复制等各种操作。
         以下是Arrays类中常用的一些方法：
         1. sort()：对数组进行排序。
         2. binarySearch()：在已排序的数组中进行二分查找。
         3. equals()：比较两个数组是否相等。
         4. fill()：将数组的所有元素都设置为指定的值
         5. toString()：将数组转换为字符串
         ——————————————————————以上五个常用——————————————————————
         6. copyOf()：复制数组的指定长度
         7. asList()：将数组转换为List集合。
         8. setAll()：使用指定的函数设置数组的所有元素。
         9. parallelSort()：对数组进行并行排序。
         10. parallelPrefix()：对数组进行并行前缀操作。
         11. parallelSetAll()：使用指定的函数设置数组的所有元素。
         12. parallelPrefix()：对数组进行并行前缀操作。
         */
        Arrays.sort(a);//对数组进行排序
        for (var item : b) System.out.printf("%d ", item);
        System.out.println();

        int index = Arrays.binarySearch(a, 3);//在已排序的数组中进行二分查找
        System.out.println(index);//2

        boolean res = Arrays.equals(a, b);//比较两个数组是否相等
        System.out.println(res);//false

        Arrays.fill(a, 10);//将数组的所有元素都设置为指定的值
        for (var item : b) System.out.printf("%d ", item);

        String p = Arrays.toString(a);//将数组转换为字符串
        System.out.println(p);

    }
}

